home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)tj.d64 / tennis stat v1.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  14KB  |  393 lines

  1. 0 GOTO10
  2. 1 FORI=631TO639:READA:POKEI,A:NEXT:POKE198,9:DATA 80,210,52,58,67,76,207,52,13
  3. 2 OPEN4,4,7:CMD4:PRINTCHR$(14)" [212]ENNIS [211]TATS BY [205][202][203] 5/25/84 ";CHR$(15):LIST
  4. 3 OPEN15,8,15:GOSUB 700:CLOSE15:END
  5. 5 REM *********************************
  6. 6 REM TENNIS STATISTICS M.J.KOZAKIEWICZ
  7. 7 REM *   REVISION DATE 5/26/84       *
  8. 8 REM *********************************
  9. 10 GOSUB 300
  10. 200 REM MAIN ROUTINE
  11. 210 GOSUB 6000
  12. 220 Z$="":GETZ$:IFZ$=""THENGOTO220
  13. 230 IFZ$=CHR$(133) THENI=I+20:GOSUB10000:REM F1= CREATE NEW FILE
  14. 235 IFZ$=CHR$(134) THENGOSUB1000:       REM F3= DISPLAY STATS TO SCREEN
  15. 240 IFZ$=CHR$(135) THENGOSUB5000:       REM F5= MODIFY STATS
  16. 245 IFZ$=CHR$(136) THENGOSUB4000:       REM F7= SAVE FILE
  17. 250 IFZ$=CHR$(137) THENGOSUB400:        REM F2= LOAD FILE
  18. 255 IFZ$=CHR$(138) THENGOSUB2000:       REM F4= ENTER MATCH RESULTS
  19. 260 IFZ$=CHR$(139) THENGOSUB3000:       REM F6= PRINT STATISTICS SHEET
  20. 265 IFZ$=CHR$(140) THENGOSUB8000:       REM F8= END PROGRAM
  21. 270 IFZ$=CHR$(17) THENI=I-1:GOSUB1000:  REM CURSOR DOWN FOR DISPLAY SCROLL
  22. 275 IFZ$=CHR$(145)THENI=I+1:GOSUB1000:  REM CURSOR UP FOR DISPLAY SCROLL
  23. 280 IFZ$=CHR$(13) THEN GOSUB6000:       REM RETURN TO MENU FROM DISPLAY SCREEN
  24. 299 GOTO220
  25. 300 REM DEFINE VARIABLES
  26. 320 I=-19:POKE53281,12:POKE53280,0:PRINT"[144]":POKE53272,23
  27. 325 W$="[215]   [204]":W2$="[215]  [204]"
  28. 330 R$=CHR$(13):TA=0:C$=",":B$="                    ":B2$=B$+B$:REM 20,40 BLANKS
  29. 340 BA$="":REM 20 CURSOR RIGHTS
  30. 350 RETURN
  31. 400 REM LOAD FILES
  32. 401 PRINT"[147]";LEFT$(B$,10);"[204]OAD TENNIS DATA[146]"
  33. 402 IF NT=0THEN408
  34. 403 LD=5:GOSUB9100:PRINT"[193] LOAD NOW WILL WIPE OUT[146] CURRENT DATA."
  35. 404 PRINT"[204]OAD A NEW LEAGUE FILE? (Y/N)":GOSUB960:IF AN$="N" THEN 495
  36. 405 IF AN$<>"Y" THEN GOSUB 950: GOTO 401
  37. 406 CLR:GOSUB 300:Z$=CHR$(137):GOTO 250
  38. 408 GOSUB970:LD=7:GOSUB9100:INPUT" [198]ILE NUMBER";F$:GOSUB980
  39. 409 IFF$="*END"THENGOSUB6000:RETURN
  40. 410 GOSUB300:CLOSE 1:CLOSE 15:OPEN15,8,15
  41. 450 OPEN1,8,2,"0:TENNIS DATA "+F$+",S,R"
  42. 452 GOSUB 705:IF E1$<>"00" THEN GOTO496
  43. 455 LD=10:GOSUB9100:PRINT"FOUND[146][144]";"  TENNIS DATA ";F$
  44. 460 INPUT#1,LN$,LT$,NT,LC$,PN$,DA$:GOSUB 705:IFE1$<>"00" THEN GOTO 496
  45. 465 IF Z=0 THEN GOSUB 9000
  46. 470 FORI=1 TO NT
  47. 480 INPUT#1,TI$(I),TN(I),TR(I),MP(I),MW(I),SP(I),SW(I)
  48. 481 GOSUB 705:IF E1$<>"00" THEN GOTO496
  49. 485 INPUT#1,GP(I),GW(I),DW(I),DL(I)
  50. 486 GOSUB 705:IF E1$<>"00" THEN GOTO496
  51. 487 J=I:GOSUB 605: REM CALCULATE #LOST, %WON
  52. 490 NEXT
  53. 494 GOSUB 500: GOSUB 805
  54. 495 GOSUB 6000
  55. 496 CLOSE1:CLOSE15:RETURN
  56. 500 REM * SORT BY % MATCHES WON. PRESERVE VARIABLES %MATCHES WON AND TEAM ID BY
  57. 505 REM * CREATING DUMMY VARIABLES D1 AND D2
  58. 510 PRINTLEFT$(B$,8);"SORTING[146]"
  59. 520 FORJ=1 TO NT: D2(J)=TN(J): D1(J)=PM(J): NEXT: REM SET UP 'SACRIFICIAL' VARS
  60. 525 FORJ=1 TO NT-1
  61. 530 FORK=J+1 TO NT
  62. 540 IFD1(K)<D1(J)THENGOTO575
  63. 550 N1=D1(K):N2=D2(K)
  64. 560 D1(K)=D1(J):D2(K)=D2(J)
  65. 570 D1(J)=N1:D2(J)=N2
  66. 575 NEXT
  67. 580 NEXT
  68. 585 FOR I=1 TO NT:TR(I)=D2(I):NEXT:REM TR(I) IS A TEAM ID, AND I IS THE RANK
  69. 599 RETURN
  70. 600 REM **        CALCULATE REST OF THE TEAM VARIABLES (#LOST, %WON)       **
  71. 605 N3=100:N4=.5
  72. 610 IF GP(J)<>0 THEN PG(J)=INT(GW(J)/GP(J)*N3+N4): REM % GAMES WON
  73. 620 IF MP(J)<>0 THEN PM(J)=INT(MW(J)/MP(J)*N3+N4): REM % MATCHES WON
  74. 630 IF SP(J)<>0 THEN PS(J)=INT(SW(J)/SP(J)*N3+N4): REM % SETS WON
  75. 640 ML(J)=MP(J)-MW(J): REM MATCHES LOST
  76. 650 SL(J)=SP(J)-SW(J): REM SETS LOST
  77. 660 GL(J)=GP(J)-GW(J): REM GAMES LOST
  78. 670 RETURN
  79. 700 REM ** DISK ERRORS **
  80. 705 INPUT#15,E1$,E2$,E3$,E4$:IF E1$="00" THEN RETURN
  81. 710 PRINT"";LEFT$(B$,8);"** [197][210][210][207][210] **":PRINT"[196]ISK ERROR ";E1$;": ";E2$;"."
  82. 720 PRINT"[208]RESS [210][197][212][213][210][206][146] FOR MENU.":RETURN
  83. 800 ** COMPUTE MATCH, SET, GAME TOTALS **
  84. 805 PRINTLEFT$(B$,9);"[195]OMPUTING [212]OTALS[146]"
  85. 807 FOR I=1 TO 8:T(I)=0:NEXT
  86. 810 FOR I=1 TO NT
  87. 820 T(1)=T(1)+DW(I)
  88. 830 T(2)=T(2)+DL(I)
  89. 840 T(3)=T(3)+MW(I)
  90. 850 T(4)=T(4)+ML(I)
  91. 860 T(5)=T(5)+SW(I)
  92. 870 T(6)=T(6)+SL(I)
  93. 880 T(7)=T(7)+GW(I)
  94. 890 T(8)=T(8)+GL(I)
  95. 899 NEXT:RETURN
  96. 900 REM DATA ENTRY SUBROUTINE FOR ALTER
  97. 905 N9=3:GOTO 915: REM STRING ENTRY POINT
  98. 910 N9=2: REM NUMERIC ENTRY POINT
  99. 915 LD=10:GOSUB9100:PRINTB$;B$;B$;B$:GOSUB9100
  100. 920 PRINTPR$;LEFT$(B$,N9);AN$:GOSUB9100:PRINTLEFT$(BA$,LEN(PR$)+1);:RETURN
  101. 950 PRINTLEFT$(B$,8)"** [201][204][204][197][199][193][204][160][214][193][204][213][197] **[146]"
  102. 955 PRINTLEFT$(B$,10)"PRESS SPACE BAR"
  103. 960 GETAN$:IFAN$=""THEN960
  104. 965 RETURN
  105. 970 LD=15:GOSUB9100:PRINT" [212]O EXIT THIS ROUTINE NOW ENTER[146] *END[146][144]":RETURN
  106. 980 LD=15:GOSUB9100:PRINTB$;B$;B$;B$:RETURN
  107. 1000 REM DISPLAY
  108. 1010 IF(I<1)OR(I>NT)THEN I=1
  109. 1015 F$=LN$+" [211][212][193][212][201][211][212][201][195][211]"
  110. 1020 PRINT"[147]"TAB(20-LEN(F$)/2);F$
  111. 1025 PRINT"[201][196]"TAB(7)"[206]AME"TAB(14)"[205]ATCH"TAB(21)"[211]ETS"TAB(28)"[199]AMES"
  112. 1027 PRINTTAB(15)W2$;TAB(21)W2$;TAB(28)"[215]   [204]";"[157]"
  113. 1030 FORK=ITOI+18
  114. 1040 IFK>NTTHENPRINT"[160]":GOTO1090
  115. 1045 J=TR(K)
  116. 1050 F2$=STR$(J) : N=2 :GOSUB 3910 : REM TEAM ID
  117. 1055 F$=B3$+" "+LEFT$(TI$(J)+B$,10) :REM ADD NAME
  118. 1060 F2$=STR$(MW(J)):N=3:GOSUB3910:F$=F$+B3$: REM ADD DEFAULTS WON
  119. 1065 F2$=STR$(ML(J)):GOSUB3910:F$=F$+B3$: REM ADD DEFAULTS LOST
  120. 1070 F2$=STR$(SW(J)):GOSUB3910:F$=F$+B3$: REM ADD MATCHES WON
  121. 1075 F2$=STR$(SL(J)):GOSUB3910:F$=F$+B3$: REM ADD MATCHES LOST
  122. 1080 F2$=STR$(GW(J)):N=4:GOSUB3910:F$=F$+B3$: REM % MATCHES WON
  123. 1085 F2$=STR$(GL(J)):GOSUB3910:F$=F$+B3$: REM SETS WON
  124. 1087 PRINT F$
  125. 1090 NEXT
  126. 1091 F$=LEFT$(B$,7)+"[212]OTALS"
  127. 1092 FOR I=3 TO 8: N=3: IF I>6 THEN N=4
  128. 1093 F2$=STR$(T(I)):GOSUB3910:F$=F$+B3$:NEXT
  129. 1094 LD=3+NT:GOSUB9100:PRINT F$
  130. 1095 PRINTTAB(5)"[208]RESS [210][197][212][213][210][206][146] TO DISPLAY [205]ENU."
  131. 1999 RETURN
  132. 2000 REM ENTER MATCH RESULTS
  133. 2010 PRINT"[147]"TAB(10)"[197][206][212][197][210][160][205][193][212][195][200][160][210][197][211][213][204][212][211]"
  134. 2015 IF MA=0 THEN GOTO 2030
  135. 2020 IF MA<>MB THEN GOTO 2026
  136. 2025 PRINT"*** [211][207][210][210][217]. [206][207][160][205][207][210][197][160][205][193][212][195][200][197][211][160][205][193][217][160][194][197][160][193][196][196][197][196][160]***":GOTO 2999
  137. 2026 PRINT:PRINT:PRINTMB;"[205]ATCH RESULTS HAVE BEEN RECORDED."
  138. 2027 PRINTMA-MB;"MORE CAN BE RECORDED.":GOTO 2045
  139. 2030 MA=2*NT : REM LIMIT MATCHES TO ADD
  140. 2040 DIM WI(MA),LO(MA),W(3,MA),L(3,MA)
  141. 2045 GOSUB970:LD=8:GOSUB9100
  142. 2046 INPUT"[215]AS THIS MATCH DEFAULTED   N[157][157][157]";AN$:IF AN$="*END"THENGOTO2177
  143. 2047 MB=MB+1:GOSUB980:IF LEFT$(AN$,1)="Y" THEN GOTO 2200
  144. 2050 LD=9:GOSUB9100:PRINT"[215]INNER(USE [201][196]#) OF MATCH     [157][157][157][157][157]";MB;:INPUT N1
  145. 2055 WI(MB)=N1
  146. 2060 INPUT"[206]UMBER OF SETS PLAYED";N
  147. 2065 FOR I=1TON
  148. 2070 PRINT"[199]AMES WON BY ";TI$(N1):PRINT"IN SET";I;:INPUT"   6[157][157][157]";W(I,MB)
  149. 2075 NEXT
  150. 2077 LD=9:GOSUB9100:FORI=1TO22:PRINTB$;:NEXT:REM BLANK OUT AREA FOR LOSER INPUT
  151. 2080 LD=9:GOSUB9100:PRINT"[204]OSER (USE [201][196]#) OF MATCH     [157][157][157][157][157]";MB;:INPUT N2
  152. 2085 LO(MB)=N2
  153. 2090 FOR I=1TON
  154. 2095 PRINT"[199]AMES WON BY ";TI$(N2):PRINT"IN SET";I;:INPUT"   6[157][157][157]";L(I,MB)
  155. 2100 NEXT
  156. 2105 REM ** UPDATE DATA BASE **
  157. 2110 MP(N1)=MP(N1)+1:MW(N1)=MW(N1)+1:SP(N1)=SP(N1)+N:SW(N1)=SW(N1)+2
  158. 2112 MP(N2)=MP(N2)+1:SP(N2)=SP(N2)+N:SW(N2)=SW(N2)+(N-2)
  159. 2115 FOR I=1 TO 3
  160. 2120 GP(N1)=W(I,MB)+L(I,MB)+GP(N1)
  161. 2122 GP(N2)=W(I,MB)+L(I,MB)+GP(N2)
  162. 2125 GW(N1)=W(I,MB)+GW(N1)
  163. 2127 GW(N2)=L(I,MB)+GW(N2)
  164. 2128 NEXT
  165. 2129 J=N1:GOSUB 605 : REM CALCULATE REST
  166. 2130 J=N2:GOSUB 605 : REM CALCULATE REST
  167. 2140 LD=17:GOSUB9100:INPUT"[205]ORE MATCHES TO REPORT   Y[157][157][157]";AN$
  168. 2170 IF AN$="Y" THEN GOTO 2000
  169. 2175 IF AN$<>"N" THEN GOTO 2140
  170. 2177 GOSUB 500 : GOSUB 805
  171. 2180 GOSUB 6000:RETURN
  172. 2190 REM ** DEFAULTED MATCH ROUTINE **
  173. 2195 REM DEFAULTED MATCHES DO NOT AFFECT THE STANDINGS
  174. 2200 LD=9:GOSUB9100:PRINT"[215]INNER(USE [201][196]#) OF MATCH     [157][157][157][157][157]";MB;:INPUT N1
  175. 2210 WI(MB)=N1
  176. 2220 LD=9:GOSUB9100:PRINT"[204]OSER (USE [201][196]#) OF MATCH     [157][157][157][157][157]";MB;:INPUT N2
  177. 2230 LO(MB)=N2
  178. 2240 DL(N2)=DL(N2)+1:DW(N1)=DW(N1)+1:GOTO2140
  179. 2999 GOSUB 6000:RETURN
  180. 3000 REM PRINT SUMMARY SHEET
  181. 3010 PRINT"[147] ":PRINTLEFT$(B$,8);"[211]TATISTICS [208]RINTING[146]"
  182. 3020 PRINT"[212]HE DATE ON RECORD IS ";DA$:GOSUB970:LD=5:GOSUB9100
  183. 3025 INPUT"[196]O YOU WANT TO UPDATE IT   Y[157][157][157]";AN$:IF LEFT$(AN$,1)="N" THEN 3040
  184. 3026 IF AN$="*END"THEN 3800
  185. 3027 GOSUB980:LD=10:GOSUB9100:INPUT"[212]HE NEW DATE IS";DA$
  186. 3028 IF DA$=""THENGOSUB950:GOTO 3027
  187. 3030 REM ** PRINT HEADER **
  188. 3040 GOSUB980:OPEN 4,4,7: F$=LN$+" [211][212][193][206][196][201][206][199][211]": GOSUB 3930 :REM PRINT CENTERED
  189. 3045 F$="AS OF "+DA$:GOSUB 3930 :PRINT#4,B$
  190. 3050 F$=LEFT$(B2$,29)+"[196]EFAULTS    [205]ATCHES"+LEFT$(B$,8)+"[211]ETS"+LEFT$(B$,8)
  191. 3060 F$=F$+"[199]AMES": PRINT#4,F$:B3$="   %    ":REM COL. HEADING 1
  192. 3065 F$=LEFT$(B$,5)+"[201][196]"+LEFT$(B$,9)+"[206]AME"+LEFT$(B$,11)+W$+LEFT$(B$,4)+W$+B3$
  193. 3070 F$=F$+W$+B3$+W$+B3$:PRINT#4,F$:REM COL. HEADING 2
  194. 3080 GOSUB 3940
  195. 3090 REM ** PRINT TEAM RESULTS **
  196. 3100 FOR J=1 TO NT:I=TR(J):REM ** PRINT OUT TEAMS IN ASCENDING RANK ORDER **
  197. 3105 F2$=STR$(TN(I)) : N=7 :GOSUB 3910 : REM TEAM ID#
  198. 3110 F$=B3$+" "+LEFT$(TI$(I)+B$,19) :REM ADD NAME
  199. 3115 F2$=STR$(DW(I)):N=3:GOSUB3910:F$=F$+"  "+B3$: REM ADD DEFAULTS WON
  200. 3120 F2$=STR$(DL(I)):GOSUB3910:F$=F$+" "+B3$: REM ADD DEFAULTS LOST
  201. 3125 F2$=STR$(MW(I)):GOSUB3910:F$=F$+"  "+B3$: REM ADD MATCHES WON
  202. 3130 F2$=STR$(ML(I)):GOSUB3910:F$=F$+" "+B3$: REM ADD MATCHES LOST
  203. 3135 F2$=STR$(PM(I)):GOSUB3910:F$=F$+" "+B3$: REM % MATCHES WON
  204. 3140 F2$=STR$(SW(I)):GOSUB3910:F$=F$+"  "+B3$: REM SETS WON
  205. 3145 F2$=STR$(SL(I)):GOSUB3910:F$=F$+" "+B3$: REM SETS LOST
  206. 3150 F2$=STR$(PS(I)):GOSUB3910:F$=F$+" "+B3$: REM % SETS WON
  207. 3155 F2$=STR$(GW(I)):GOSUB3910:F$=F$+"  "+B3$: REM GAMES WON
  208. 3160 F2$=STR$(GL(I)):GOSUB3910:F$=F$+" "+B3$: REM GAMES LOST
  209. 3170 F2$=STR$(PG(I)):GOSUB3910:F$=F$+" "+B3$:PRINT#4,F$:REM % GAMES WON
  210. 3175 NEXT
  211. 3180 GOSUB3940:F2$="[212]OTALS":N=28:GOSUB3910:F$=B3$
  212. 3183 F2$=STR$(T(1)):N=6:GOSUB3910:F$=F$+B3$
  213. 3185 F2$=STR$(T(2)):N=4:GOSUB3910:F$=F$+B3$
  214. 3187 FOR I=3 TO 8: N=4: IF I=3 THEN N=5
  215. 3190 IF (I=5)OR(I=7) THEN N=9
  216. 3195 F2$=STR$(T(I)):GOSUB 3910:F$=F$+B3$:NEXT:PRINT#4,F$
  217. 3200 REM ** PRINT MATCH RESULTS **
  218. 3205 IF MB=0 THEN GOTO 3360
  219. 3210 PRINT#4,B$:PRINT#4,B$
  220. 3220 F$="* * [210]ECENTLY [210]EPORTED [205]ATCH [210]ESULTS * *":GOSUB 3930:PRINT#4,B$
  221. 3230 F2$="[215]INNER":N=18:GOSUB 3910:F$=B3$
  222. 3240 F2$="[204]OSER":N=20:GOSUB 3910:F$=F$+B3$+LEFT$(B$,11)
  223. 3250 FOR I=1 TO 3
  224. 3260 F2$="[211]ET #"+RIGHT$(STR$(I),1):N=7:GOSUB 3910:F$=F$+B3$:NEXT:PRINT#4,F$
  225. 3270 GOSUB 3940
  226. 3280 FOR I=1 TO MB
  227. 3290 F$=LEFT$(B$,4)+LEFT$(TI$(WI(I))+B$,20)+LEFT$(B$,4)+LEFT$(TI$(LO(I))+B$,20)
  228. 3300 FOR K=1 TO 3
  229. 3310 IF (L(K,I)=0)AND(W(K,I)=0) THEN GOTO 3340: REM IF BOTH GAMES 0 BRANCH
  230. 3320 F2$=RIGHT$(STR$(W(K,I)),1)+C$+RIGHT$(STR$(L(K,I)),1):N=7:GOSUB3910
  231. 3330 F$=F$+B3$
  232. 3340 NEXT:PRINT#4,F$:NEXT
  233. 3350 REM ** NEXT MATCH **
  234. 3360 PRINT"[215]HEN IS THE NEXT [205]ATCH [211]CHEDULED?":INPUT"[196]ATE   NONE[157][157][157][157][157][157]";AN$
  235. 3370 IF AN$="NONE"THEN GOTO 3600
  236. 3380 PRINT#4,B$:PRINT#4,B$:F$="** [206]EXT [205]ATCH [196]ATE "+AN$+" **":GOSUB 3930
  237. 3390 PRINT#4,B$:INPUT"[206]UMBER OF MATCHES SCHEDULED";AN$:N=VAL(AN$)
  238. 3400 FOR I=1 TO N
  239. 3410 INPUT"[212]EAM [201][196]'S FOR A MATCH (EG. 4,7)";N1,N2
  240. 3420 INPUT"[205]ATCH TIME (MUST BE IN QUOTES)";F9$:IFF9$<>CHR$(13)THENAN$=F9$
  241. 3425 F2$=TI$(N1):N=30:GOSUB 3910
  242. 3430 F$=B3$+" VS. "+LEFT$(TI$(N2)+B$,20)
  243. 3440 F$=F$+LEFT$(B$,5)+AN$:PRINT#4,F$:NEXT
  244. 3450 REM ** MATCH COORDINATOR DATA **
  245. 3460 PRINT#4,B$:PRINT#4,B$
  246. 3470 F$="[196]IVISION [195]OORDINATOR: "+LC$+LEFT$(B$,5)+"[208]HONE: "+PN$:GOSUB 3930
  247. 3480 REM ** LEAGUE SPECIFIC DATA **
  248. 3490 PRINT#4,B$:PRINT#4,B$:F$="  1. [205]ATCH COORDINATOR MUST PROVIDE TENNIS BALLS, SEE "
  249. 3495 F$=F$+"THAT PLAYERS ARE SET,":PRINT#4,F$:F$="     AND REPORT [205]ATCH SCORES "
  250. 3500 F$=F$+"TO THE [196]IVISION COORDINATOR.":PRINT#4,F$:F$="  2. [215]INNER OF A [205]ATCH "
  251. 3510 F$=F$+"THAT CAUSES A CHANGE IN THE CHALLENGE LADDER MUST RECORD":PRINT#4,F$
  252. 3520 F$="     RESULTS ON THE LOG SHEET IN THE [215]EILAND [210]D. [195]LUBHOUSE.":PRINT#4,F$
  253. 3530 F$="  3. [196]EFAULTED [205]ATCHES ARE NOT USED IN CALCULATING THE [211]TANDINGS. [196]EF"
  254. 3540 F$=F$+"AULTS ARE":PRINT#4,F$:F$="     REFLECTED ONLY IN THE [196]EFAULTS [215]/[204]"
  255. 3550 F$=F$+" COLUMNS.":PRINT#4,F$
  256. 3600 CLOSE4
  257. 3800 GOSUB6000:RETURN
  258. 3900 REM ** RIGHT JUSTIFY A NUMERICAL STRING (F2$) IN A FIELD OF BLANKS N LONG *
  259. 3910 B3$=RIGHT$(LEFT$(B$,N)+F2$,N):RETURN
  260. 3920 REM ** PRINT, CENTERED IN A 80 COL FIELD, THE STRING F$ **
  261. 3930 N=LEN(F$):B3$=LEFT$(B2$,(40-N/2)):F$=B3$+F$:PRINT#4,F$:RETURN
  262. 3940 F$="[183]":FOR I=1TO6:F$=F$+F$:NEXT:F$="  "+F$+LEFT$(F$,12):PRINT#4,F$:RETURN
  263. 4000 REM SAVE FILE
  264. 4010 PRINT"[147]":PRINTLEFT$(B$,10);"[211]AVE TENNIS DATA[146]":GOSUB970:LD=4:GOSUB9100
  265. 4020 INPUT" [198]ILE NUMBER";F$
  266. 4025 N=VAL(F$)
  267. 4030 IFF$="*END"THENGOSUB6000:RETURN
  268. 4040 GOSUB980:CLOSE 15:OPEN15,8,15
  269. 4050 CLOSE 1: OPEN1,8,2,"0:TENNIS DATA "+F$+",S,W"
  270. 4055 GOSUB 705:IF E1$<>"00" THEN GOTO4999
  271. 4060 PRINT#1,LN$;C$;LT$;C$;NT;C$;LC$;C$;PN$;C$;DA$
  272. 4065 GOSUB 705:IF E1$<>"00" THEN GOTO4999
  273. 4070 FORI=1 TO NT
  274. 4080 PRINT#1,TI$(I);C$;TN(I);C$;TR(I);C$;MP(I);C$;MW(I);C$;SP(I);C$;SW(I)
  275. 4082 GOSUB 705:IF E1$<>"00" THEN GOTO4999
  276. 4085 PRINT#1,GP(I);C$;GW(I);C$;DW(I);C$;DL(I)
  277. 4087 GOSUB 705:IF E1$<>"00" THEN GOTO4999
  278. 4090 NEXT
  279. 4100 GOSUB 6000
  280. 4999 CLOSE1:CLOSE15:RETURN
  281. 5000 REM ** ALTER DATA ROUTINES **
  282. 5010 REM ** ALTER DATA MAIN MENU **
  283. 5110 PRINT"[147]"LEFT$(B$,7);"[204]EAGUE [196]ATA [193]LTERATIONS"
  284. 5120 LD=4:GOSUB9100
  285. 5130 PRINT:PRINT"[144]OPTIONS:[144]"
  286. 5140 PRINTTAB(8)"[144]========[144]"
  287. 5150 PRINTTAB(8)"F1[146][144]-[193]LTER [194]ASIC [204]EAGUE [196]ATA"
  288. 5160 PRINTTAB(8)"F3[146][144]-[193]LTER [201]NDIVIDUAL [212]EAM [196]ATA"
  289. 5170 PRINTTAB(8)"F5[146][144]-[193]LTER [205]ATCH [196]ATA"
  290. 5180 PRINTTAB(8)"F7[146][144]-[210]ETURN TO [205]AIN [205]ENU"
  291. 5190 PRINT:PRINT:PRINT:PRINT:PRINTLEFT$(B$,9)"** [208]RESS AN F[146][144] KEY **"
  292. 5195 GETZ1$:IFZ1$=""THEN5195
  293. 5200 IFZ1$=CHR$(133) THEN GOSUB 5300:GOTO5110:REM F1
  294. 5210 IFZ1$=CHR$(134) THENGOSUB5500:GOTO5110:REM F3
  295. 5220 IFZ1$=CHR$(135) THENGOSUB5700:GOTO5110:REM F5
  296. 5230 IFZ1$=CHR$(136) THENGOSUB605:GOSUB510:GOSUB6000:RETURN:REM F7
  297. 5235 GOSUB950:GOTO5110
  298. 5300 REM ** ALTER BASIC LEAGUE DATA **
  299. 5310 B3$="[193]LTER [194]ASIC [204]EAGUE [196]ATA":GOSUB5815
  300. 5320 PR$="[204]EAGUE [206]AME":AN$=LN$:GOSUB905:INPUTLN$
  301. 5330 PR$="[204]EAGUE [195]OORDINATOR":AN$=LC$:GOSUB905:INPUTLC$
  302. 5340 PR$="[195]OORDINATOR [208]HONE":AN$=PN$:GOSUB905:INPUTPN$
  303. 5350 PR$="[196]ATE":AN$=DA$:GOSUB905:INPUTDA$
  304. 5360 RETURN
  305. 5500 REM ** ALTER DATA FOR A TEAM **
  306. 5505 B3$="[193]LTER [196]ATA FOR A [212]EAM":GOSUB 5815
  307. 5510 LD=10:GOSUB9100
  308. 5515 INPUT"[197]NTER [212]EAM [201][196]# OR Q (QUIT)   Q[157][157][157]";AN$
  309. 5520 II=VAL(AN$):IF AN$="Q"THEN RETURN
  310. 5525 IF(II<1) OR (II>NT) THEN GOSUB950:GOTO 5505
  311. 5530 PR$="[206]AME":AN$=TI$(II):GOSUB905:INPUTTI$(II)
  312. 5535 PR$="[205]ATCHES [215]ON":AN$=STR$(MW(II)):GOSUB910:INPUTMW(II)
  313. 5540 PR$="[205]ATCHES [204]OST":AN$=STR$(ML(II)):GOSUB910:INPUTML(II)
  314. 5545 MP(II)=MW(II)+ML(II)
  315. 5550 PR$="[211]ETS [215]ON":AN$=STR$(SW(II)):GOSUB910:INPUTSW(II)
  316. 5555 PR$="[211]ETS [204]OST":AN$=STR$(SL(II)):GOSUB910:INPUTSL(II)
  317. 5560 SP(II)=SW(II)+SL(II)
  318. 5565 PR$="[199]AMES [215]ON":AN$=STR$(GW(II)):GOSUB910:INPUTGW(II)
  319. 5570 PR$="[199]AMES [204]OST":AN$=STR$(GL(II)):GOSUB910:INPUTGL(II)
  320. 5575 GP(II)=GW(II)+GL(II)
  321. 5585 PR$="[196]EFAULTS [215]ON":AN$=STR$(DW(II)):GOSUB910:INPUTDW(II)
  322. 5590 PR$="[196]EFAULTS [204]OST":AN$=STR$(DL(II)):GOSUB910:INPUTDL(II)
  323. 5595 RETURN
  324. 5700 REM ** ALTER MATCH DATA **
  325. 5705 PRINT"[147][211]ORRY, THIS FUNCTION NOT YET IMPLEMENTED":GOSUB 955:RETURN
  326. 5800 REM ** ALTER ROUTINE SUBROUTINES **
  327. 5805 REM ** INSTRUCTIONS FOR ALTER ROUTINES **
  328. 5815 PRINT"[147]"TAB(20-LEN(B3$)/2);B3$:PRINT
  329. 5835 PRINT:PRINT"[208]RESS [210][197][212][213][210][206][146] TO KEEP THE CURRENT VALUE."
  330. 5840 PRINT"[212]YPE OVER THE DATA AND PRESS [210][197][212][213][210][206][146] TO"
  331. 5845 PRINTLEFT$(B$,11)"ALTER THE DATA."
  332. 5850 RETURN
  333. 6000 REM OPTIONS MENU
  334. 6010 PRINT"[147][144]OPTIONS:[144]"
  335. 6020 PRINTTAB(8)"[144]========[144]"
  336. 6030 PRINTTAB(8)"F1[146][144]-[195]REATE [206]EW [204]EAGUE [198]ILE"
  337. 6040 PRINTTAB(8)"F2[146][144]-[204]OAD [204]EAGUE [198]ILE"
  338. 6050 PRINTTAB(8)"F3[146][144]-[196]ISPLAY [204]EAGUE [211]TATISTICS"
  339. 6060 PRINTTAB(8)"F4[146][144]-[197]NTER [205]ATCH [210]ESULTS"
  340. 6070 PRINTTAB(8)"F5[146][144]-[205]ODIFY [211]TATISTICS"
  341. 6080 PRINTTAB(8)"F6[146][144]-[208]RINT [207]UT [204]EAGUE [211]TATS [211]HEET"
  342. 6090 PRINTTAB(8)"F7[146][144]-[211]AVE [195]HANGES"
  343. 6100 PRINTTAB(8)"F8[146][144]-END"
  344. 6110 PRINTTAB(8)"NOTE[146][144]-ENTER *END[146][144] TO EXIT A"
  345. 6120 PRINTTAB(5)"FUNCTION ENTERRED ACCIDENTALLY."
  346. 6999 RETURN
  347. 8000 REM END OF JOB
  348. 8010 PRINT"[147]":PRINTLEFT$(B$,10);"** [197]ND OF PROGRAM **":GOSUB970:LD=3:GOSUB9100
  349. 8020 PRINT"[144]WOULD YOU LIKE TO SAVE (Y/N)   ";:INPUT"N[157][157][157]";AN$
  350. 8030 IF AN$="*END"THENGOSUB6000:RETURN
  351. 8040 IF AN$="N"THEN GOTO8060
  352. 8050 GOSUB4000
  353. 8060 PRINT"[147][195]'EST FINI."
  354. 8070 PRINT"END"
  355. 8080 END
  356. 9000 N=NT:DIM TI$(N),TN(N),TR(N),MP(N),MW(N),SP(N),SW(N),GP(N),GW(N),PM(N)
  357. 9010 DIM PS(N),DW(N),DL(N),PG(N),D1(N),D2(N):RETURN
  358. 9100 PRINT"": FOR I=1 TO LD: PRINT:NEXT:RETURN
  359. 10000 REM CREATE NEW LEAGUE FILE
  360. 10020 PRINT"[147]":PRINTLEFT$(B$,8);"[195]REATE [206]EW [204]EAGUE [198]ILE[146]":GOSUB970
  361. 10030 LD=5:GOSUB9100
  362. 10040 INPUT"[215]HAT IS THE NAME OF THE LEAGUE";LN$:IFLN$="*END"THENGOSUB6000:RETURN
  363. 10050 GOSUB980:LD=6:GOSUB9100:INPUT"[196]OUBLES OR SINGLES LEAGUE (D/S)";LT$
  364. 10060 LT$=LEFT$(LT$,1):IF(LT$<>"D") AND (LT$<>"S") THEN GOTO 10050
  365. 10070 INPUT"[206]UMBER OF TEAMS IN LEAGUE";NT
  366. 10072 INPUT"[204]EAGUE COORDINATOR NAME";LC$
  367. 10075 INPUT"[204]EAGUE COORDINATOR PHONE";PN$
  368. 10077 INPUT"[212]HE DATE (EG. 3/15/84)";DA$
  369. 10080 LD=17:GOSUB9100
  370. 10090 PRINT"[204]EAGUE [206]AME: ";LN$
  371. 10100 PRINT"[204]EAGUE TYPE: ";LT$
  372. 10110 PRINT"[206]UMBER IN [204]EAGUE:";NT:PRINT
  373. 10112 PRINT"[204]EAGUE [195]OORDINATOR: ";LC$
  374. 10114 PRINT"[195]OORDINATOR PHONE: ";PN$
  375. 10116 PRINT"[212]ODAY'S DATE: ";DA$
  376. 10120 INPUT"[201]S THIS CORRECT   Y[157][157][157]";AN$
  377. 10130 IF AN$<>"Y" THEN GOTO 10020
  378. 10140 GOSUB 9000 : REM DIM VARS
  379. 10150 FOR I=1 TO NT
  380. 10160 LD=05:PRINT"[147]":PRINT"[206]AME OF TEAM";I;:INPUT":";TI$(I)
  381. 10170 TN(I)=I
  382. 10180 NEXT
  383. 10190 PRINT"[147]":LD=5:GOSUB9100
  384. 10200 PRINT"[204]EAGUE [205]EMBERS":PRINT
  385. 10210 FOR I=1 TO NT
  386. 10220 PRINT"[212]EAM";I,TI$(I):NEXT:PRINT
  387. 10230 INPUT"[193]RE THESE CORRECT   Y[157][157][157]";AN$
  388. 10240 IF AN$="Y" THEN GOSUB 4000:GOSUB6000:RETURN
  389. 10250 IF AN$<>"N" THEN GOTO 10230
  390. 10260 INPUT"[215]HAT TEAM NUMBER IS WRONG";N
  391. 10270 INPUT"[212]HE CORRECT NAME";TI$(N)
  392. 10280 GOTO 10190
  393.